package com.hospital;

import io.rong.imkit.RongIM;
import io.rong.imkit.RongIM.LocationProvider;
import io.rong.imkit.fragment.ConversationFragment;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.Message;
import io.rong.imlib.model.UserInfo;

import java.util.Locale;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;

import androidx.fragment.app.FragmentActivity;

import com.hospital.pony.config.DemoContext;


public class ConversationActivity extends FragmentActivity implements OnClickListener, LocationProvider {

	TextView tv_black;

	/**
	 * 标题
	 */
	private TextView tv_title;

	/**
	 * 目标 Id
	 */
	private String mTargetId;

	/**
	 * 刚刚创建完讨论组后获得讨论组的id 为targetIds，需要根据 为targetIds 获取 targetId
	 */
	private String mTargetIds;

	String title;

	/**
	 * 会话类型
	 */
	private Conversation.ConversationType mConversationType;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_im_chat);

		// InputProvider.ExtendProvider[] provider = {
		// new PhotoCollectionsProvider(RongContext.getInstance()),//图片
		// new CameraInputProvider(RongContext.getInstance()),//相机
		// new LocationInputProvider(RongContext.getInstance()),//地理位置
		// new VoIPInputProvider(RongContext.getInstance()),// 语音通话
		// new ContactsProvider(RongContext.getInstance())//通讯录
		//

		// // // 扩展功能自定义
		// InputProvider.ExtendProvider[] provider = { new
		// ImageInputProvider(RongContext.getInstance()), // 图片
		// new CameraInputProvider(RongContext.getInstance()), // 相机
		// new LocationInputProvider(RongContext.getInstance()) // 地理位置
		// };

		// // 扩展功能自定义
//		InputProvider.ExtendProvider[] provider = { new PhotoCollectionsProvider(RongContext.getInstance()), // 图片
//				new CameraInputProvider(RongContext.getInstance()), // 相机
//				new LocationInputProvider(RongContext.getInstance()) // 地理位置
//		};
		// //
		// // 扩展功能自定义
		// InputProvider.ExtendProvider[] provider = {};
//		RongIM.resetInputExtensionProvider(Conversation.ConversationType.PRIVATE, provider);
//		Intent intent = getIntent();

//		getIntentDate(intent);
		/**
		 * 设置会话界面操作的监听器。
		 */
		RongIM.setConversationBehaviorListener(new MyConversationBehaviorListener());
		RongIM.setLocationProvider(this);// 设置地理位置提供者,不用位置的同学可以注掉此行代码


	}

	/**
	 * 展示如何从 Intent 中得到 融云会话页面传递的 Uri
	 */
	private void getIntentDate(Intent intent) {

		mTargetId = intent.getData().getQueryParameter("targetId");
		// mTargetIds = intent.getData().getQueryParameter("targetIds");
		title = getIntent().getData().getQueryParameter("title");
		// intent.getData().getLastPathSegment();//获得当前会话类型
		mConversationType = Conversation.ConversationType.valueOf(intent.getData().getLastPathSegment().toUpperCase(Locale.getDefault()));

		enterFragment(mConversationType, mTargetId);
	}

	/**
	 * 加载会话页面 ConversationFragment
	 *
	 * @param mConversationType
	 *            会话类型
	 * @param mTargetId
	 *            目标 Id
	 */
	private void enterFragment(Conversation.ConversationType mConversationType, String mTargetId) {

		ConversationFragment fragment = (ConversationFragment) getSupportFragmentManager().findFragmentById(R.id.conversation);

		Uri uri = Uri.parse("rong://" + getApplicationInfo().packageName).buildUpon().appendPath("conversation")
				.appendPath(mConversationType.getName().toLowerCase()).appendQueryParameter("targetId", mTargetId).build();

		fragment.setUri(uri);
	}

	@Override
	public void onClick(View v) {

	}

	private class MyConversationBehaviorListener implements RongIM.ConversationBehaviorListener {

		/**
		 * 当点击用户头像后执行。
		 *
		 * @param context
		 *            上下文。
		 * @param conversationType
		 *            会话类型。
		 * @param userInfo
		 *            被点击的用户的信息。
		 * @return 如果用户自己处理了点击后的逻辑，则返回 true，否则返回 false，false 走融云默认处理方式。
		 */
		@Override
		public boolean onUserPortraitClick(Context context, Conversation.ConversationType conversationType, UserInfo userInfo) {

			Toast.makeText(ConversationActivity.this, "我的数据", Toast.LENGTH_SHORT).show();

			return false;
		}

		/**
		 * 当长按用户头像后执行。
		 *
		 * @param context
		 *            上下文。
		 * @param conversationType
		 *            会话类型。
		 * @param userInfo
		 *            被点击的用户的信息。
		 * @return 如果用户自己处理了点击后的逻辑，则返回 true，否则返回 false，false 走融云默认处理方式。
		 */
		@Override
		public boolean onUserPortraitLongClick(Context context, Conversation.ConversationType conversationType, UserInfo userInfo) {
			return false;
		}

		/**
		 * 当点击消息时执行。
		 *
		 * @param context
		 *            上下文。
		 * @param view
		 *            触发点击的 View。
		 * @param message
		 *            被点击的消息的实体信息。
		 * @return 如果用户自己处理了点击后的逻辑，则返回 true， 否则返回 false, false 走融云默认处理方式。
		 */
		@Override
		public boolean onMessageClick(Context context, View view, Message message) {

//			if (message.getContent() instanceof LocationMessage) {
//				Intent intent = new Intent(context, MainActivity.class);
//				intent.putExtra("location", message.getContent());
//				context.startActivity(intent);
//			} else if (message.getContent() instanceof ImageMessage) {
//				ImageMessage imageMessage = (ImageMessage) message.getContent();
//				Intent intent = new Intent(context, PhotoActivity.class);
//				intent.putExtra("photo", imageMessage.getLocalUri() == null ? imageMessage.getRemoteUri() : imageMessage.getLocalUri());
//				if (imageMessage.getThumUri() != null)
//					intent.putExtra("thumbnail", imageMessage.getThumUri());
//				context.startActivity(intent);
//			}

			return false;
		}

		/**
		 * 当长按消息时执行。
		 *
		 * @param context
		 *            上下文。
		 * @param view
		 *            触发点击的 View。
		 * @param message
		 *            被长按的消息的实体信息。
		 * @return 如果用户自己处理了长按后的逻辑，则返回 true，否则返回 false，false 走融云默认处理方式。
		 */
		@Override
		public boolean onMessageLongClick(Context context, View view, Message message) {
			return false;
		}

		/**
		 * 当点击链接消息时执行。
		 *
		 * @param context
		 *            上下文。
		 * @param link
		 *            被点击的链接。
		 * @return 如果用户自己处理了点击后的逻辑处理，则返回 true， 否则返回 false, false 走融云默认处理方式。
		 */
		@Override
		public boolean onMessageLinkClick(Context context, String link) {
			return false;
		}
	}

	@Override
	public void onStartLocation(Context context, LocationCallback callback) {
		/**
		 * demo 代码 开发者需替换成自己的代码。
		 */
		DemoContext.getInstance().setLastLocationCallback(callback);
//		ConversationActivity.this.startActivity(new Intent(ConversationActivity.this, MainActivity.class));// SOSO地图
	}

}

